/* 
 * File:   Entier.cpp
 * Author: Gab'z
 * 
 * Created on 1 mai 2012, 19:46
 */

#include "Reel.h"

Reel* Reel::clone() const {
    return new Reel(_x);
}

Reel::~Reel() {
}

std::string Reel::toString() const {
    // utiliser un flux de sortie pour créer la chaîne
    std::ostringstream oss;
    // écrire la valeur dans le flux
    oss << _x; // renvoyer une string
    return oss.str();
}

double Reel::value() const {
    return (double) _x;
}

Reel& Reel::operator+=(const Reel& r) {
    _x += r._x;
    return *this;
}

Reel& Reel::operator-=(const Reel& r) {
    _x -= r._x;
    return *this;
}

Reel& Reel::operator*=(const Reel& r) {
    _x *= r._x;
    return *this;
}

Reel& Reel::operator/=(const Reel& r) {
    if (r._x == 0) throw std::invalid_argument("Division par 0 d'un reel");
    _x /= r._x;
    return *this;
}

Reel operator+(const Reel& r1, const Reel& r2) {
    Reel r(r1);
    r += r2;
    return r;
}

Reel operator-(const Reel& r1, const Reel& r2) {
    Reel r(r1);
    r -= r2;
    return r;
}

Reel operator*(const Reel& r1, const Reel& r2) {
    Reel r(r1);
    r *= r2;
    return r;
}

Reel operator/(const Reel& r1, const Reel& r2) {
    Reel r(r1);
    r /= r2;
    return r;
}
